<?php
if (!defined('BASEPATH'))
    exit('No direct script access allowed');
class CardCharge extends MY_Controller {
   public function __construct(){
		parent::__construct();
		if(!$this->session->userdata('userdata')){
			$this->session->set_flashdata('return', $this->uri->uri_string);
			redirect('/dang-nhap');
		}			
   }
	
	function index(){		 
		// $this->load->library('NganLuongCardPayment');
		// $merchant_id = '34727';
		// $password = '0907173388';
		// $params = array(
			// 'func' 					=> 'CardCharge',
			// 'version'				=> '2.0',
			// 'merchant_id'			=> $merchant_id,
			// 'merchant_account'	=> 'bachho3388@gmail.com',
			// 'merchant_password'	=> MD5($merchant_id.'|'.$password),
			// 'pin_card'				=> '12345678912345',
			// 'card_serial'        => 'XYZ123',
			// 'type_card'				=> 'VNP',
			// 'ref_code'				=> time(),
			// 'client_fullname'		=> 'Do Cong Dien',
			// 'client_email'			=> 'diendc@gmail.com',
			// 'client_mobile'		=> '0904515105',
		// );
		// $this->nganluongcardpayment->set_user_id('');
		// $this->nganluongcardpayment->init($params);
		// $this->nganluongcardpayment->request();die;
		// echo '<pre>';print_r($this->config);die;
		$data = array();
		$data['title'] 	= 'Nạp thẻ cào điện thoại - Thanh toán';
		//captcha
		$cap_word = random_string('alpha',6);
		$vals = array(
			'word'	=>	strtoupper($cap_word),
			'font_path'	=>	'assets/fonts/VERDANAB.TTF',
			'img_path' => 'uploads/captcha/',
			'img_url' => base_url().'uploads/captcha/',
			'img_width'	 => '120',
			'img_height' => 30,
			'expiration' => 7200
		);
		/* Generate the captcha */
		$this->load->helper('captcha');
		$captcha = create_captcha($vals);
		/* Store the captcha value (or 'word') in a session to retrieve later */
		$this->session->set_userdata('captcha', $captcha['word']);
		$data['captcha'] = $captcha['image'];
		$this->load->model('help_m', 'help');
		$data['helps'][] 	= array(
			'title'	=>	'Hướng dẫn thanh toán',
			'help'	=>	$this->help->get_helps('thanh_toan'));
		$data['content'] 	= 'card';
		// $data['quangcao'] = 'tpl/quangcao';
		$this->load->view('tpl/template', $data);
 	}
	
	function check_captcha($input){
		$captcha = $this->session->userdata('captcha');
		if(strtoupper($input) != strtoupper($captcha)){
			$this->form_validation->set_message('check_captcha', "<strong>Mã bảo mật</strong> nhập không đúng.");
			$this->session->unset_userdata('captcha');
			return false;
		}
		$this->session->unset_userdata('captcha');
		return true;
	}
	
	function process(){
		$post = $this->input->post();
		if($post){
			$user	= $this->session->userdata('userdata');
			if($user['id']){
				$this->form_validation->set_message('required', '<strong>%s</strong> cần phải nhập');
				$this->form_validation->set_message('min_length', '<strong>%s</strong> tối thiểu phải %s ký tự');
				$this->form_validation->set_message('max_length', '<strong>%s</strong> tối đa là %s ký tự');
				$this->form_validation->set_message('numeric', '<strong>%s</strong> chỉ bao gồm các ký số (0-9)');
				$this->form_validation->set_error_delimiters('<div>', '</div>');			
				$this->form_validation->set_rules('card_type', 'Loại thẻ', 'required');
				$this->form_validation->set_rules('card_code', 'Mã thẻ', 'required|min_length[9]|max_length[15]|numeric');
				$this->form_validation->set_rules('card_serial', 'Số Serial', 'required|numeric');
				$this->form_validation->set_rules('captcha', 'Mã bảo mật', 'trim|max_length[6]|callback_check_captcha');			
				if ($this->form_validation->run() == FALSE){
					$data['error'] = validation_errors();
				}else{
					//insert canhan table
					$card_type	= $post['card_type'];
					$info = array();
					switch($card_type){
						case	'mobifone':
							$info['card_type'] = 'VMS';
						break;
						case	'vinaphone':
							$info['card_type'] = 'VNP';
						break;
						case	'viettel':
							$info['card_type'] = 'VIETTEL';
						break;
						case	'gate':
							$info['card_type'] = 'GATE';
						break;
						default:
							$info['card_type'] = false;
						break;
					}
					if(!$info['card_type'])
						$data['error']	=	'Loại thẻ chưa được hỗ trợ. Vui lòng liên hệ với ban quản trị.';
					else{
						$info['pin_card'] 		= $post['card_code'];
						$info['card_serial'] 	= $post['card_serial'];
						$info['client_fullname']= $user['ho_ten'] . $user['ten_ntd'];
						$info['client_email'] 	= $user['email'];
						//
						$merchant_id = $this->config->item('merchant_id');
						$password = $this->config->item('merchant_password');
						$params = array(
							'func' 					=> 'CardCharge',
							'version'				=> '2.0',
							'merchant_id'			=> $merchant_id,
							'merchant_account'	=> $this->config->item('merchant_account'),
							'merchant_password'	=> MD5($merchant_id.'|'.$password),
							'pin_card'				=> $info['pin_card'],
							'card_serial'        => $info['card_serial'],
							'type_card'				=> $info['card_type'],
							'ref_code'				=> time(),
							'client_fullname'		=> $info['client_fullname'],
							'client_email'			=> $info['client_email'],
							'client_mobile'		=> '',
						);
						$this->load->library('NganLuongCardPayment');
						$this->nganluongcardpayment->set_user_id($user['id']);
						$this->nganluongcardpayment->init($params);
						$res = $this->nganluongcardpayment->request();
						if($res){
							$this->load->model('payment_m', 'payment');
							// $res['error_code'] = '00';
							// $res['card_amount'] = 10000;
							if($res['error_code'] == '00'){
								$save['id']	=	'';
								$save['user_id']	= $user['id'];
								$save['loai']		= 'CARD';
								$save['ma_ctu']	= $info['pin_card'];
								$save['acc_ref']	= $info['card_serial'];
								$save['ho_ten']	= $info['client_fullname'];
								$save['so_tien']	= $res['card_amount'];
								$save['so_diem']	= round($res['card_amount']/$this->config->item('money_per_point'));
								$save['ngay_nop'] = date('Y-m-d');
								$save['ngay_nhap']= date('Y-m-d H:i:s');
								//save
								$this->db->trans_start();
								//payment table
								$payment_id	= $this->payment->save($save);
								//tien_ao table
								$this->payment->save_tien_ao(array('user_id'=>$save['user_id'],'so_diem'=>$save['so_diem']));
								//thanh_toan table
								$this->payment->save_thanh_toan(array(
									'user_id'	=>	$save['user_id'],
									'noi_dung'	=>	"Nộp tiền vào tài khoản, số điểm được cộng: <b>{$save['so_diem']}</b>",
									'point'		=>	$save['so_diem'],
									'ngay'		=> date('Y-m-d H:i:s')
								));
								$this->db->trans_complete();
								if($this->db->trans_status() === FALSE)
									$data['error'] = 'Có lỗi xảy ra.';
								else{
									$this->session->set_flashdata('message', "Nộp tiền vào tài khoản thành công, số điểm được cộng: <b>{$save['so_diem']}</b>, <a href=\"". site_url('tai-khoan')."\">Xem tài khoản</a>");
									redirect('nap-tien');
								}
							}else{
								$obj = $this->payment->get_loi($res['error_code']);
								$data['error'] = $obj->mo_ta;
							}
						}else
							$data['error']	=	'Có lỗi xảy ra. Vui lòng liên hệ với ban quản trị.';
					}
				}
			}
		}
		//captcha
		$this->load->helper('captcha');
		$cap_word = random_string('alpha',6);
		$vals = array(
			'word'	=>	strtoupper($cap_word),
			'font_path'	=>	'assets/fonts/VERDANAB.TTF',
			'img_path' => 'uploads/captcha/',
			'img_url' => base_url().'uploads/captcha/',
			'img_width'	 => '120',
			'img_height' => 30,
			'expiration' => 7200
		);
		/* Generate the captcha */
		$captcha = create_captcha($vals);
		/* Store the captcha value (or 'word') in a session to retrieve later */
		$this->session->set_userdata('captcha', $captcha['word']);
		$data['captcha'] = $captcha['image'];	
		$data['content'] 	= 'card';
		// $data['quangcao'] = 'tpl/quangcao';
		$this->load->view('tpl/template', $data);
	}
 }